import lombok.Builder;
import lombok.Getter;

/**
 * 构建一个代码生成器
 *
 * @author : NanCheung
 */
@Getter
@Builder
public class MpGeneratorBuilder extends MpGeneratorResolver {
    
    /**
     * 需要生成的表名
     */
    private final String[] tableNames;
    /**
     * 该表名前缀 生成model时不会生成前缀 没有前缀或者需要生成前缀就置空
     */
    private final String tableNamePrefix;
    
    /**
     * 作者信息
     */
    @Builder.Default
    private final String author = "NanCheung";
    
    /**
     * 需要自动生成的代码层
     * <p>默认生成"bean", "mapper"</p>
     * <p>controller,service,mapper,bean</p>
     */
    @Builder.Default
    private final CsmbEnum[] csmb = {CsmbEnum.bean, CsmbEnum.mapper, CsmbEnum.mapper_xml};
    
    /**
     * 模块名
     */
    private final String moduleName;
    
    /**
     * 【实体】是否使用lombok 默认开启
     */
    @Builder.Default
    private final Boolean lombok = true;
    /**
     * 【实体】是否开启AR模式
     */
    @Builder.Default
    private final Boolean activeRecord = true;
    /**
     * 生成完成后是否打开窗口 默认关闭
     */
    @Builder.Default
    private final Boolean openInExplorer = false;
    /**
     * 【实体】是否为构建者模型（默认 false）
     */
    @Builder.Default
    private final Boolean entityBuilderModel = false;
    /**
     * 是否开启Swagger2
     */
    @Builder.Default
    private final Boolean swagger2 = true;
    
    /**
     * 数据库JDBC链接
     */
    private final String dataBaseUrl;
    /**
     * 数据库账户
     * 默认：root
     */
    @Builder.Default
    private final String dataBaseUserName = "root";
    /**
     * 数据库密码
     */
    private final String dataBasePassword;
    
    /**
     * 是否将mapper.xml放在resources目录下
     */
    @Builder.Default
    private final Boolean mapperXmlInResources = true;
    
    public void execute() {
        super.builder = this;
        super.execute();
    }
}
